package com.htjc.integral.common.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 *  时间工具类
 * @author zw
 *
 */
public class TimeUtil {
	@SuppressWarnings("unused")
	private static SimpleDateFormat sf = null;
	/**
	 *  获取当前时间
	 * @param str 需要的时间格式
	 * @return
	 */
	public static Object  getTimeStamp(String str) {
		//得到long类型当前时间
		long l=System.currentTimeMillis();
		//new日期对象
		Date date =new Date(l);
		//转换提日期输出格式
		SimpleDateFormat dateFormat=new SimpleDateFormat(str);
		return dateFormat.format(date);
	}

	/**
	 *  获取当前时间
	 * @param str 需要的时间格式
	 * @return
	 */
	public static String getDate(String str) {
		//得到long类型当前时间
		long l=System.currentTimeMillis();
		//new日期对象
		Date date =new Date(l);
		//转换提日期输出格式
		SimpleDateFormat dateFormat=new SimpleDateFormat(str);
		return dateFormat.format(date);
	}

	/**
	 *  转换日期格式
	 * @param str 需要的时间格式
	 * @return
	 */
	public static String getDateFomat(Date date,String str) {
		//转换提日期输出格式
		SimpleDateFormat dateFormat=new SimpleDateFormat(str);
		return dateFormat.format(date);
	}

	/**
	 *  转换日期格式
	 * @param str 需要的时间格式
	 * @return
	 * @throws ParseException 
	 */
	public static Date stringToDate(String date,String str) {
		//转换提日期输出格式
		SimpleDateFormat dateFormat=new SimpleDateFormat(str);
		Date parse=null;
		try {
			parse = dateFormat.parse(date);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return parse;
	}

	/**
	 *  时间戳转换日期格式
	 * @param str 需要的时间格式
	 * @return
	 * @throws ParseException 
	 */
	public static Date timestampToDate(String date,String str) {
		//转换提日期输出格式
		SimpleDateFormat dateFormat=new SimpleDateFormat(str);
		Date parse=null;
		Long time=new Long(date);  
		try {
			String d = dateFormat.format(time);  
			parse = dateFormat.parse(d);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return parse;
	}

	/**
	 * 获得本月第一天00:00:00
	 * 
	 * @param curr
	 * @return
	 */
	public static Date getCurrentMonthMinDayDate() {
		Calendar c = Calendar.getInstance();
		c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), 1, 00, 00, 00);
		return c.getTime();

	}
	
	/**
	 * 获取前一天日期 YYYYMMdd
	 * @return
	 */
	public static String getYesterday(){
		Calendar ca = Calendar.getInstance();//得到一个Calendar的实例 
		ca.setTime(new Date()); //设置时间为当前时间 
		ca.add(Calendar.DATE, -1); //年份减1 
		Date date = ca.getTime(); //结果
		//求前一月ca.add(Calendar.MONTH, -1)
		//求前一年ca.add(Calendar.YEAR, -1)
		SimpleDateFormat dateFormat=new SimpleDateFormat("YYYYMMdd");
		return dateFormat.format(date);
	}
	
	/**
	 * 获取下一个月当天日期 YYYYMMdd
	 * @return
	 */
	public static String getNextMonthday(){
		Calendar ca = Calendar.getInstance();//得到一个Calendar的实例 
		ca.setTime(new Date()); //设置时间为当前时间 
		ca.add(Calendar.MONTH, 1);
		Date date = ca.getTime(); //结果
		//求前一年ca.add(Calendar.YEAR, -1)
		SimpleDateFormat dateFormat=new SimpleDateFormat("YYYYMMdd");
		return dateFormat.format(date);
	}
	
}
